/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"A4FE8692-37F2-4071-B857-0B3F478CB748"}
 */
var fFormLlama = 'recepciones_carga_cab';

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"278E76A5-21B0-4003-AE4F-22F99C327933"}
 */
function onDataChangeProducto(oldValue, newValue, event) {
	
	cod_producto		= recep_detalle_to_productos_ind.cod_producto
	precio_actual 		= recep_detalle_to_productos_ind.precio_unitario
	
	if (recep_detalle_to_oc_detalle_ind != null)
	{
		precio_unitario 	= recep_detalle_to_oc_detalle_ind.precio_unitario_real
		precio_sistema_oc 	= recep_detalle_to_oc_detalle_ind.precio_unitario_sistema	
	}
	else
	{
		precio_unitario 	= precio_actual
		precio_sistema_oc 	= precio_actual
	}
	
	var $rcd = foundset.getRecord(foundset.getSelectedIndex())
	globals.defineUnidad($rcd, recep_detalle_to_productos_ind, recep_detalle_to_productos_ind.tipo)
	defineTotales($rcd)
	
	if (cantidad != null)
	{
		if (recep_detalle_to_oc_detalle_ind.cantidad_pendiente_entrega < cantidad_alter)
		{
			globals.DIALOGS.showWarningDialog('Aviso','La cantidad supera a la cantidad pendiente de la orden de compra','OK')
		}
	}	
	
	elements.cantidad.requestFocus()
		
	return true
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"633E6D95-1A8B-4EB5-800E-DAFBA5B9797C"}
 */
function onDataChangeCantidad(oldValue, newValue, event) {
	var $rcd = foundset.getRecord(foundset.getSelectedIndex())
	
	globals.defineUnidad($rcd,$rcd.recep_detalle_to_productos_ind,$rcd.recep_detalle_to_productos_ind.tipo)
	
	defineTotales($rcd)
	
	if (cantidad != null && recep_detalle_to_oc_detalle_ind != null)
	{
		if (recep_detalle_to_oc_detalle_ind.cantidad_pendiente_entrega < cantidad_alter)
		{
			globals.DIALOGS.showWarningDialog('Aviso','La cantidad supera a la cantidad pendiente de la orden de compra','OK')
		}
	}
	
	return true
}

/**
 * @properties={typeid:24,uuid:"A2067DA2-DE4F-4778-B6A7-7A252C5E9D1B"}
 */
function defineTotales($rcd)
{
	calculaTotalRenglon($rcd)
	
	if ($rcd.pie_cuadrado != null)
		forms[fFormLlama].fTotP2 += $rcd.pie_cuadrado
	
	if ($rcd.recep_kilogramos > 0)
		forms[fFormLlama].fTotKg -= $rcd.recep_kilogramos
	
	$rcd.recep_kilogramos 	= $rcd.recep_detalle_to_productos_ind.kilogramos * $rcd.cantidad
	forms[fFormLlama].fTotKg += $rcd.recep_kilogramos	
}

/**
 * Handle record selected.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"DEFB7A40-CA34-4B8D-B341-935318084473"}
 */
function onRecordSelection(event) {
	elements.cod_producto.requestFocus()
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"1D0451A4-EDC7-475A-95C7-8A5256CA8DEA"}
 */
function onDataChangeCajas(oldValue, newValue, event) {

	var $cant 		= recep_detalle_to_precios_proveedor_ind.cantidad_x_caja
	cantidad 		= $cant * newValue

	return true
}

/**
 * @properties={typeid:24,uuid:"AD3DC142-1B98-48D0-BFC3-3235DC410768"}
 */
function calculaTotalRenglon($rcd)
{
	var $cab = forms.recepciones_carga_cab_ind.foundset.getRecord(forms.recepciones_carga_cab_ind.foundset.getSelectedIndex())

	if ($rcd.agrupamiento != null)
	{
		var oc = tieneOc($rcd.agrupamiento,$cab.oc_cabecera_id)
		
		if (oc != -1)
		{
			var oc_dtl_id 	= oc[0]
			var precio 		= oc[1]
			
			$rcd.oc_detalle_id 		= oc_dtl_id
			$rcd.total_renglon 		= $rcd.cantidad_alter * precio
			$rcd.precio_unitario 	= precio
			$rcd.precio_sistema_oc 	= $rcd.recep_detalle_to_oc_detalle_ind.precio_unitario_sistema
		}
		else
		{
			$rcd.oc_detalle_id 		= null
			$rcd.total_renglon 		= $rcd.cantidad_alter * $rcd.recep_detalle_to_productos_ind.productos_to_agrupamiento_ind.costo_en_pesos
			$rcd.precio_unitario	= $rcd.recep_detalle_to_productos_ind.productos_to_agrupamiento_ind.costo_en_pesos
			$rcd.precio_sistema_oc	= null
		}
	}
	else
	{
		var oc = tieneOc($rcd.cod_producto,$cab.oc_cabecera_id)
		
		if (oc != -1)
		{
			var oc_dtl_id 	= oc[0]
			var precio 		= oc[1]
			
			$rcd.oc_detalle_id 	= oc_dtl_id
			$rcd.total_renglon 	= $rcd.cantidad_alter * precio
			precio_unitario 	= precio
			precio_sistema_oc 	= $rcd.recep_detalle_to_oc_detalle_ind.precio_unitario_sistema
		}
		else
		{
			$rcd.oc_detalle_id 		= null
			$rcd.total_renglon 		= $rcd.cantidad_alter * $rcd.recep_detalle_to_productos_ind.costo_en_pesos
			$rcd.precio_unitario	= $rcd.recep_detalle_to_productos_ind.costo_en_pesos
			$rcd.precio_sistema_oc	= null
		}
	}
}

/**
 * @return {Object}
 * @properties={typeid:24,uuid:"2C05C351-CCA1-4996-8BA9-833850EC648D"}
 */
function tieneOc(producto,cabecera)
{
	var query 	= 'select oc_detalle_id, precio_unitario from oc_detalle '+
					'where oc_cabecera_id = ? and cod_producto = ?'
	var args 	= [cabecera,producto]
	var ds 		= databaseManager.getDataSetByQuery('infocom',query,args,-1)
	
	if (ds.getMaxRowIndex() > 0)
	{
		return ds.getRowAsArray(1)
	}
	return -1
}
